home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
T-TPUG Old Monthly Disks
/
(c)ta.d64
/
rescue.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
5KB
|
151 lines
0 PG$=" R E S C U E ":AU$="RESCUE SURVIVORS":F=1
25 POKE53280,0:POKE53281,0
50 CRT=1024:WD=40:VIC=53248:SID=54272:JS=56320:CM=55296:QL=214:QI=254
90 GOTO62000
100 DIMJD(15):FORI=0TO15:READ JD(I):NEXT
101 DATA0,0,0,0,0,6,6,6,0,4,4,4,0,2,8,0
102 DEF FNJ(X)=JD(PEEK(JS+X)AND 15):DEF FNB(X)=(PEEK(JS+X) AND 16)=0
103 GOSUB1000:OF=CM-CRT:CP=7:CR=CRT-1:MV=88
104 POKESID+5,1:POKESID+6,255:POKESID+24,15:POKESID+4,33
110 MS=1:F=10000:S=0:L=SJ-1:LV=LF:HS=0:RU=0:BN=50
112 FORI=0TO4:FORJ=0TO4:X(I,J)=0:NEXT:NEXT
114 FORJ=1TOL+1:ONJGOSUB590,600,610:NEXTJ
115 PRINT"[147]";
116 FORCV=1TO23:PRINT" ":NEXT
117 GOSUB280
120 POKESID+24,15:POKESID+1,0
125 DN$=""
130 PRINTDN$"[156][163][163][163][163][163][163][205]"
140 PRINT"[158][209][209][209][209][209][156] [160][163][163][163][163][205] [206][163][163][163][163][163][163][163][163][145][206][163][163][163][163][163][163][163][163][163][163][163][163][157][148][163]"
150 PRINT"[158] [156][205][158][168][168][168][156][206]"
155 GOSUB800
160 PRINT"":X=1:US=87:Y=1:V=2:AD=-1:IFRU=0THENRU=1:GOSUB580
170 POKECR+WD+X,US:POKECR+WD+X+OF,CP:GOSUB280
175 IFF<=0THENGOSUB290:GOTO640
180 D$=RIGHT$(STR$(FNJ(0)),1):IFD$="0"THEN190
183 Y=2:SS=CR+X+WD:POKESS,MV
185 POKECR+X+WD*Y,US:POKECR+X+WD*Y+OF,CP:POKESID+1,99:GOTO320
190 GETQ$:IFQ$="Q"THENPRINT"[147]":POKESID+1,0:POKESID+15,0:END
195 GOSUB230
200 F=F-1:IFF=0THENGOSUB290:GOTO640
210 POKECR+WD+X,32:X=X+Y:IFX=40ORX=1THENY=-1
220 GOTO170
230 FORI=0TOL-1:X(I,2)=X(I,2)+1:IFX(I,2)<X(I,0)THEN260
240 X(I,2)=0:X$(I)=RIGHT$(X$(I),1)+LEFT$(X$(I),LEN(X$(I))-1):PRINT"";
250 PRINTLEFT$("",I+1)LEFT$(DN$,X(I,1))X$(I)"";
260 NEXTI:ER=0:PP=PEEK(PP):IFPP=86ORPP=90ORPP=105THENER=1
270 RETURN
280 PRINT"FUEL:"MID$(STR$(F),2)" "
285 PRINT""TAB(12)" SCORE:";MID$(STR$(S),2)" ":RETURN
290 POKESID+24,15:POKESID+1,0:FORJ=1TO6
295 POKESID+1,246:PRINT"OUT OF FUEL!":FORI=1TO99:NEXTI
300 POKESID+1,165:PRINT"OUT OF FUEL!":FORI=1TO99:NEXTI,J
305 POKESID+1,0:POKESID+24,0:FORI=1TO200:NEXTI:LV=0:RETURN
320 U=0:Z=FNJ(0)
321 POKESID+1,81
330 D$=C$:POKESID+1,0
335 GETQ$:IFQ$="Q"THENPRINT"[147]":POKESID+1,0:POKESID+15,0::END
340 IFZ=4THENF=F-10:GOSUB540:ONGTGOTO400,420
350 IFZ=6THENF=F-10:GOSUB560:ONGTGOTO400,420
360 IFFNB(0)<>0ANDY>3THENF=F-50:Y=Y+AD
370 POKECR+X+Y*WD,32:Y=Y-AD:A=0:U=1:P=PEEK(CR+X+Y*WD):GOTO420
380 IFRND(1)*30>=LTHEN400
381 KY=INT(RND(1)*15+3):KX=INT(RND(1)*39)+1
382 IFKY=9ORKY=12ORKY=16ORKX=XTHEN400
385 K=CRT+KY*WD+KX
390 IF PEEK(K)=32ORPEEK(K)=96 THENPOKEK,42:POKEK+OF,8
400 GOSUB230:IFERTHEN635
410 F=F-1:GOSUB280:IFF>0THEN320
411 GOSUB290:F=0:GOTO640
420 IFP=104THENGOSUB470:GOTO320
430 IFP=MVTHENGOSUB900:GOSUB520:POKESID+1,0:GOTO160
440 IFP<>USANDP<>32ANDP<>96THEN635
450 PP=CR+X+Y*WD:POKEPP,US:POKEPP+OF,CP:ONU+1GOTO370,380
470 POKECR+X+Y*WD,87:HS=HS+1:POKESID+1,120
480 POKECR+21*WD+HS,32
485 JL=32:JM=190:FORJK=CR+21*WD+HS+WDTOCR+X+Y*WD
486 POKEJK-1,JL:JL=PEEK(JK):POKEJK,81:POKESID+1,JM:FORJ=1TO30:NEXT
487 JM=JM-10:POKESID+1,0:NEXT:US=81
488 POKECR+X+Y*WD,US:POKECR+X+Y*WD+OF,CP
490 IF FNJ(0)=0THENGOSUB230:GOSUB850:GOTO490
495 POKESID+1,100:FORJ=1TO40:NEXT
500 POKECR+X+Y*WD,104:Y=Y-2:AD=-AD:POKESID+1,0:RETURN
520 POKESS,32:IFDFANDUS=81THENAP=1
525 IFDF=0THENS=S+(MS+1)*10
530 IFHS=5ANDAP=0THENS=S+BN:GOSUB955
535 IFHS=5THENHS=0:AP=0:MS=MS+1:RU=0:PRINT"";DN$;"[158][209][209][209][209][209]":GOSUB800
537 GOSUB280:FORI=1TO750:NEXTI:RETURN
540 IFX>1THENPOKECR+X+Y*WD,32:X=X-1:P=PEEK(CR+X+Y*WD):GT=2:RETURN
550 IFX>1THENPOKECR+X+Y*WD,32:X=X-1:P=PEEK(CR+X+Y*WD):GT=2:RETURN
560 IFX<WDTHENPOKECR+X+Y*WD,32:X=X+1:P=PEEK(CR+X+Y*WD):GT=2:RETURN
570 GT=1:RETURN
580 L=L+1:ONLGOSUB590,600,610,620
590 X$(0)="> > > > > ":X(0,0)=4:X(0,1)=12:RETURN
600 X$(1)="[218] [218] [218] [218] [218] [218] [218] ":X(1,0)=3:X(1,1)=16:RETURN
610 X$(2)=" [214] [214] [214] [214] [214] [214] ":X(2,0)=2:X(2,1)=9:RETURN
620 L=L-1:POKECR+22*WD+16,100:POKECR+22*WD+14,100:RETURN
635 Q=CR+X+INT(Y)*WD:Z=PEEK(Q):POKEQ,160:PRINT"CRASH ! "
636 FORJ=1TO4:PRINT"CRASH !":FORJ1=1TO20:POKESID+1,255:POKESID+1,0
637 NEXTJ1:PRINT"CRASH !":FORJ1=1TO99:NEXT:NEXT:FORJ=1TO500:NEXT
638 POKEQ,Z:DF=1:GOSUB520:DF=0
640 LV=LV-1:IFLV>0THENPOKESS,32:GOTO155
650 IFS>BSTHENBS=S:BF=F
660 IFMS>BMTHENBM=MS
670 IFF<0THENF=0
675 MT=MT+MS:FT=FT+F:NT=NT+1:TS=TS+S:AVG=INT(TS/NT):FA=INT(FT/NT)
678 AVG=INT(TS/NT):FA=INT(FT/NT):MA=MT/NT:MA=.1*(INT(MA*10))
680 DF$="EASY":IFSJ>1THENDF$="AVERAGE":IFSJ=3THENDF$="HARD"
685 PRINT"[147]MISSION CONTROL REPORT"
687 PRINT" LEVEL: "DF$
689 PRINT""TAB(27)"# OF"
690 PRINTTAB(18)"SCORE";TAB(25);"MISSIONS"
692 PRINT" THIS GAME:"TAB(19)S;TAB(27)MS
700 IFNT<2THEN730
710 PRINT" BEST SO FAR:"TAB(19)BS;TAB(27)BM
720 PRINT" AVERAGE:"TAB(19)AV;TAB(27)MA
730 GOSUB9100
740 IFYN=0THENPOKESID+24,0:PRINT"[147]":END
750 PRINT"[147]":GOTO110
800 PRINT"";DN$;"MISSION:";MS;" GAME:";NT+1;" SHUTTLES LEFT:";LV-1;
810 RETURN
850 F=F-1:GOSUB280:FORI=1TO80:NEXTI:RETURN
900 REM
910 FORJ=100TO30STEP-3:POKESID+1,J:NEXT:POKESID+1,0:RETURN
950 REM
955 PRINT""TAB(25)"BONUS!!![146]"
960 POKESID+1,150:FORJ=1TO300:NEXT:POKESID+1,100:FORJ=1TO300:NEXT
965 POKESID+1,50:FORJ=1TO300:NEXT:POKESID+1,0:RETURN
1000 PRINT"[147]":GOSUB7000
1030 IFG=1THENLF=5:SJ=1:RETURN
1040 IFG=2THENLF=2:SJ=2:RETURN
1050 IFG=3THENLF=1:SJ=3:RETURN
7000 PRINT"[147]PICK A SKILL LEVEL:[151]":
7010 FORI=1TO3:PRINTI;:NEXTI:PRINT:G=1:T=1:TM=0
7020 X=G:IFTI>TMTHENPRINTTAB(3*G-3);MID$("[151]",T,1);"[145]";G:T=3-T:TM=TI+10
7030 IFFNJ(0)=4THENIFG>1THENG=G-1
7040 IFFNJ(0)=6THENIFG<3THENG=G+1
7050 IFX<>GTHENPRINTTAB(3*X-3);"[151][145]";X:T=1:TM=0
7060 IFFNB(0)=0THEN7020
7070 RETURN
9100 NO=0:PRINT""
9110 TM=0:SW=1
9115 PRINT"PLAY AGAIN? [151]YES NO[145]"
9120 IFTI<TMTHEN9150
9130 PRINTTAB(12+NO*4);MID$("[151]",SW,1);MID$("YESNO[160]",3*NO+1,3);"[145]"
9140 SW=3-SW:TM=TI+15
9150 JD=PEEK(JS)AND31:JB=(JD<16):JD=JDAND15
9160 IFJBANDJD=15THENYN=(NO=0):RETURN
9170 IF(JDAND8)=0ANDNO=0THENNO=1:GOTO9115
9180 IF(JDAND4)=0ANDNO=1THENNO=0:GOTO9115
9190 GOTO9120
61000 CRT=1024:WD=40:VIC=53248:SID=54272:JS=56320:CM=55296:QL=214:QI=254
61010 RETURN
62000 GOSUB61000:POKEVIC+32,0:POKEVIC+33,0:LN=LEN(PG$):TB=(40-LN)/2
62010 PRINT"[147][158]"TAB(TB)LEFT$(" ",LN)
62020 PRINT""TAB(TB)PG$:PRINT""TAB(TB)LEFT$(" ",LN)
62030 PRINT""TAB((40-LEN(AU$))/2)AU$
62040 MS$="[157][157]PRESS KEY TO BEGIN"
62060 PRINT"[159]"TAB(TB)MS$:PRINT"[159]"
62070 GETIN$:IFIN$=""THEN62070
62080 GOTO100